package principal.model;

import java.util.Iterator;

import principal.model.vos.Articulo;
import principal.model.vos.CodigoSeguridad;
import principal.model.vos.Kit;
import principal.model.vos.Producto;

public class ProductoDao {
	
	TransaccionesBD trans = new TransaccionesBD();
	
	public void saveProducto(Producto produc){
		String id;
		CodigoSeguridad cod;
			
		if( produc.getArticulo()!=null){
			ArticuloDao comp = new ArticuloDao();
			ArticuloComponente componente = produc.getArticulo();
			Articulo prod = (Articulo)componente;
			 id= prod.getId();
			comp.save(prod);
			comp.stockAdd(prod);
			cod = produc.getCodSeg();
			
			
			}
		else{
			KitDao comp = new KitDao();
			ArticuloComponente componente = produc.getKit();
			Kit prod = (Kit)componente;
			id= prod.getId();
			comp.save(prod);
			comp.stockAdd(prod);
			cod = produc.getCodSeg();
			
		}
		trans.saveCodigoSeguridad(id, cod );
		
	}

	
	public void remove(Producto produc){
		String id;
		CodigoSeguridad cod;
		if( produc.getArticulo()!=null){
			ArticuloDao comp = new ArticuloDao();
			ArticuloComponente componente = produc.getArticulo();
			Articulo prod = (Articulo)componente;
			id= prod.getId();
			comp.remove(id);
			comp.stockRemove(prod);
			
			
			
			}
		else{
			KitDao comp = new KitDao();
			ArticuloComponente componente = produc.getKit();
			Kit prod = (Kit)componente;
			id= prod.getId();
			comp.remove(id);
			comp.stockRemove(prod);
			
			
		}
		
		trans.removeCodigoSeguridad(id);
	}
	
	public void removeKitsOnKit(Producto produc){
		String id;
		Kit kit = (Kit) produc.getKit();

		//Roos2
		Iterator kitIterator = kit.getChildren().iterator();
//		Iterator<ArticuloComponente> kitIterator = kit.getChildren().iterator();
		
		
		
		while (kitIterator.hasNext()) {
			
			
			//Roos2
//			ArticuloComponente kitItem = kitIterator.next();
			ArticuloComponente kitItem = (ArticuloComponente) kitIterator.next();
			
			if (kitItem instanceof Kit) {
				//elimina los kits que vengan en el kit
				KitDao comp = new KitDao();
				id= ((Kit)kitItem).getId();
				comp.remove(id);
				comp.stockRemove(((Kit)kitItem));
				trans.removeCodigoSeguridad(id);
			}else{
				//elimina los Articulos que vengan en el kit
				ArticuloDao comp = new ArticuloDao();
				id= ((Articulo)kitItem).getId();
				comp.remove(id);
				comp.stockRemove(((Articulo)kitItem));
				trans.removeCodigoSeguridad(id);
			}
		}
	}
}
	
	